<!doctype html>
<html>
<head>
    <meta charset='UTF-8'>
    <meta name='viewport' content='width=device-width initial-scale=1'>
    <title>龚涛 - 个人简历</title>
    <link href='https://fonts.loli.net/css?family=Open+Sans:400italic,700italic,700,400&subset=latin,latin-ext'
          rel='stylesheet' type='text/css'/>
    <link rel="stylesheet" type="text/css" href="../assets/css/vno.css">
    <link rel="stylesheet" type="text/css" href="../assets/css/iconfont.css">
    <link rel="apple-touch-icon" href="../img/resume/resume.png">
    <link rel="icon" href="../img/resume/resume.ico">
    <style type='text/css'>html {
        overflow-x: initial !important;
    }

    :root {
        --bg-color: #ffffff;
        --text-color: #333333;
        --select-text-bg-color: #B5D6FC;
        --select-text-font-color: auto;
        --monospace: "Lucida Console", Consolas, "Courier", monospace;
    }

    html {
        font-size: 14px;
        background-color: var(--bg-color);
        color: var(--text-color);
        font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
        -webkit-font-smoothing: antialiased;
    }

    body {
        margin: 0px;
        padding: 0px;
        height: auto;
        bottom: 0px;
        top: 0px;
        left: 0px;
        right: 0px;
        font-size: 1rem;
        line-height: 1.42857143;
        overflow-x: hidden;
        background-image: inherit;
        background-size: inherit;
        background-attachment: inherit;
        background-origin: inherit;
        background-clip: inherit;
        background-color: inherit;
        tab-size: 4;
        background-position: inherit inherit;
        background-repeat: inherit inherit;
    }

    iframe {
        margin: auto;
    }

    a.url {
        word-break: break-all;
    }

    a:active, a:hover {
        outline: 0px;
    }

    .in-text-selection, ::selection {
        text-shadow: none;
        background: var(--select-text-bg-color);
        color: var(--select-text-font-color);
    }

    #write {
        margin: 0px auto;
        height: auto;
        width: inherit;
        word-break: normal;
        word-wrap: break-word;
        position: relative;
        white-space: normal;
        overflow-x: visible;
        padding-top: 40px;
    }

    #write.first-line-indent p {
        text-indent: 2em;
    }

    #write.first-line-indent li p, #write.first-line-indent p * {
        text-indent: 0px;
    }

    #write.first-line-indent li {
        margin-left: 2em;
    }

    .for-image #write {
        padding-left: 8px;
        padding-right: 8px;
    }

    body.typora-export {
        padding-left: 30px;
        padding-right: 30px;
    }

    .typora-export .footnote-line, .typora-export li, .typora-export p {
        white-space: pre-wrap;
    }

    @media screen and (max-width: 500px) {
        body.typora-export {
            padding-left: 0px;
            padding-right: 0px;
        }

        #write {
            padding-left: 20px;
            padding-right: 20px;
        }

        .CodeMirror-sizer {
            margin-left: 0px !important;
        }

        .CodeMirror-gutters {
            display: none !important;
        }
    }

    #write li > figure:last-child {
        margin-bottom: 0.5rem;
    }

    #write ol, #write ul {
        position: relative;
    }

    img {
        max-width: 100%;
        vertical-align: middle;
    }

    button, input, select, textarea {
        color: inherit;
        font-family: inherit;
        font-size: inherit;
        font-style: inherit;
        font-variant-caps: inherit;
        font-weight: inherit;
        font-stretch: inherit;
        line-height: inherit;
    }

    input[type="checkbox"], input[type="radio"] {
        line-height: normal;
        padding: 0px;
    }

    *, ::after, ::before {
        box-sizing: border-box;
    }

    #write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p, #write pre {
        width: inherit;
    }

    #write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p {
        position: relative;
    }

    p {
        line-height: inherit;
    }

    h1, h2, h3, h4, h5, h6 {
        break-after: avoid-page;
        break-inside: avoid;
        orphans: 2;
    }

    p {
        orphans: 4;
    }

    h1 {
        font-size: 2rem;
    }

    h2 {
        font-size: 1.8rem;
    }

    h3 {
        font-size: 1.6rem;
    }

    h4 {
        font-size: 1.4rem;
    }

    h5 {
        font-size: 1.2rem;
    }

    h6 {
        font-size: 1rem;
    }

    .md-math-block, .md-rawblock, h1, h2, h3, h4, h5, h6, p {
        margin-top: 1rem;
        margin-bottom: 1rem;
    }

    .hidden {
        display: none;
    }

    .md-blockmeta {
        color: rgb(204, 204, 204);
        font-weight: 700;
        font-style: italic;
    }

    a {
        cursor: pointer;
    }

    sup.md-footnote {
        padding: 2px 4px;
        background-color: rgba(238, 238, 238, 0.7);
        color: rgb(85, 85, 85);
        border-top-left-radius: 4px;
        border-top-right-radius: 4px;
        border-bottom-right-radius: 4px;
        border-bottom-left-radius: 4px;
        cursor: pointer;
    }

    sup.md-footnote a, sup.md-footnote a:hover {
        color: inherit;
        text-transform: inherit;
        text-decoration: inherit;
    }

    #write input[type="checkbox"] {
        cursor: pointer;
        width: inherit;
        height: inherit;
    }

    figure {
        overflow-x: auto;
        margin: 1.2em 0px;
        max-width: calc(100% + 16px);
        padding: 0px;
    }

    figure > table {
        margin: 0px !important;
    }

    tr {
        break-inside: avoid;
        break-after: auto;
    }

    thead {
        display: table-header-group;
    }

    table {
        border-collapse: collapse;
        border-spacing: 0px;
        width: 100%;
        overflow: auto;
        break-inside: auto;
        text-align: left;
    }

    table.md-table td {
        min-width: 32px;
    }

    .CodeMirror-gutters {
        border-right-width: 0px;
        background-color: inherit;
    }

    .CodeMirror-linenumber {
    }

    .CodeMirror {
        text-align: left;
    }

    .CodeMirror-placeholder {
        opacity: 0.3;
    }

    .CodeMirror pre {
        padding: 0px 4px;
    }

    .CodeMirror-lines {
        padding: 0px;
    }

    div.hr:focus {
        cursor: none;
    }

    #write pre {
        white-space: pre-wrap;
    }

    #write.fences-no-line-wrapping pre {
        white-space: pre;
    }

    #write pre.ty-contain-cm {
        white-space: normal;
    }

    .CodeMirror-gutters {
        margin-right: 4px;
    }

    .md-fences {
        font-size: 0.9rem;
        display: block;
        break-inside: avoid;
        text-align: left;
        overflow: visible;
        white-space: pre;
        background-image: inherit;
        background-size: inherit;
        background-attachment: inherit;
        background-origin: inherit;
        background-clip: inherit;
        background-color: inherit;
        position: relative !important;
        background-position: inherit inherit;
        background-repeat: inherit inherit;
    }

    .md-diagram-panel {
        width: 100%;
        margin-top: 10px;
        text-align: center;
        padding-top: 0px;
        padding-bottom: 8px;
        overflow-x: auto;
    }

    #write .md-fences.mock-cm {
        white-space: pre-wrap;
    }

    .md-fences.md-fences-with-lineno {
        padding-left: 0px;
    }

    #write.fences-no-line-wrapping .md-fences.mock-cm {
        white-space: pre;
        overflow-x: auto;
    }

    .md-fences.mock-cm.md-fences-with-lineno {
        padding-left: 8px;
    }

    .CodeMirror-line, twitterwidget {
        break-inside: avoid;
    }

    .footnotes {
        opacity: 0.8;
        font-size: 0.9rem;
        margin-top: 1em;
        margin-bottom: 1em;
    }

    .footnotes + .footnotes {
        margin-top: 0px;
    }

    .md-reset {
        margin: 0px;
        padding: 0px;
        border: 0px;
        outline: 0px;
        vertical-align: top;
        text-decoration: none;
        text-shadow: none;
        float: none;
        position: static;
        width: auto;
        height: auto;
        white-space: nowrap;
        cursor: inherit;
        line-height: normal;
        font-weight: 400;
        text-align: left;
        box-sizing: content-box;
        direction: ltr;
        background-position: 0px 0px;
        background-repeat: initial initial;
    }

    li div {
        padding-top: 0px;
    }

    blockquote {
        margin: 1rem 0px;
    }

    li .mathjax-block, li p {
        margin: 0.5rem 0px;
    }

    li {
        margin: 0px;
        position: relative;
    }

    blockquote > :last-child {
        margin-bottom: 0px;
    }

    blockquote > :first-child, li > :first-child {
        margin-top: 0px;
    }

    .footnotes-area {
        color: rgb(136, 136, 136);
        margin-top: 0.714rem;
        padding-bottom: 0.143rem;
        white-space: normal;
    }

    #write .footnote-line {
        white-space: pre-wrap;
    }

    @media print {
        body, html {
            border: 1px solid transparent;
            height: 99%;
            break-after: avoid;
            break-before: avoid;
        }

        #write {
            margin-top: 0px;
            padding-top: 0px;
            border-color: transparent !important;
        }

        .typora-export * {
            -webkit-print-color-adjust: exact;
        }

        html.blink-to-pdf {
            font-size: 13px;
        }

        .typora-export #write {
            padding-left: 32px;
            padding-right: 32px;
            padding-bottom: 0px;
            break-after: avoid;
        }

        .typora-export #write::after {
            height: 0px;
        }
    }

    .footnote-line {
        margin-top: 0.714em;
        font-size: 0.7em;
    }

    a img, img a {
        cursor: pointer;
    }

    pre.md-meta-block {
        font-size: 0.8rem;
        min-height: 0.8rem;
        white-space: pre-wrap;
        background-color: rgb(204, 204, 204);
        display: block;
        overflow-x: hidden;
        background-position: initial initial;
        background-repeat: initial initial;
    }

    p > .md-image:only-child:not(.md-img-error) img, p > img:only-child {
        display: block;
        margin: auto;
    }

    p > .md-image:only-child {
        display: inline-block;
        width: 100%;
    }

    #write .MathJax_Display {
        margin: 0.8em 0px 0px;
    }

    .md-math-block {
        width: 100%;
    }

    .md-math-block:not(:empty)::after {
        display: none;
    }

    [contenteditable="true"]:active, [contenteditable="true"]:focus, [contenteditable="false"]:active, [contenteditable="false"]:focus {
        outline: 0px;
        box-shadow: none;
    }

    .md-task-list-item {
        position: relative;
        list-style-type: none;
    }

    .task-list-item.md-task-list-item {
        padding-left: 0px;
    }

    .md-task-list-item > input {
        position: absolute;
        top: 0px;
        left: 0px;
        margin-left: -1.2em;
        margin-top: calc(1em - 10px);
        border: none;
    }

    .math {
        font-size: 1rem;
    }

    .md-toc {
        min-height: 3.58rem;
        position: relative;
        font-size: 0.9rem;
        border-top-left-radius: 10px;
        border-top-right-radius: 10px;
        border-bottom-right-radius: 10px;
        border-bottom-left-radius: 10px;
    }

    .md-toc-content {
        position: relative;
        margin-left: 0px;
    }

    .md-toc-content::after, .md-toc::after {
        display: none;
    }

    .md-toc-item {
        display: block;
        color: rgb(65, 131, 196);
    }

    .md-toc-item a {
        text-decoration: none;
    }

    .md-toc-inner:hover {
        text-decoration: underline;
    }

    .md-toc-inner {
        display: inline-block;
        cursor: pointer;
    }

    .md-toc-h1 .md-toc-inner {
        margin-left: 0px;
        font-weight: 700;
    }

    .md-toc-h2 .md-toc-inner {
        margin-left: 2em;
    }

    .md-toc-h3 .md-toc-inner {
        margin-left: 4em;
    }

    .md-toc-h4 .md-toc-inner {
        margin-left: 6em;
    }

    .md-toc-h5 .md-toc-inner {
        margin-left: 8em;
    }

    .md-toc-h6 .md-toc-inner {
        margin-left: 10em;
    }

    @media screen and (max-width: 48em) {
        .md-toc-h3 .md-toc-inner {
            margin-left: 3.5em;
        }

        .md-toc-h4 .md-toc-inner {
            margin-left: 5em;
        }

        .md-toc-h5 .md-toc-inner {
            margin-left: 6.5em;
        }

        .md-toc-h6 .md-toc-inner {
            margin-left: 8em;
        }
    }

    a.md-toc-inner {
        font-size: inherit;
        font-style: inherit;
        font-weight: inherit;
        line-height: inherit;
    }

    .footnote-line a:not(.reversefootnote) {
        color: inherit;
    }

    .md-attr {
        display: none;
    }

    .md-fn-count::after {
        content: ".";
    }

    code, pre, samp, tt {
        font-family: var(--monospace);
    }

    kbd {
        margin: 0px 0.1em;
        padding: 0.1em 0.6em;
        font-size: 0.8em;
        color: rgb(36, 39, 41);
        background-color: rgb(255, 255, 255);
        border: 1px solid rgb(173, 179, 185);
        border-top-left-radius: 3px;
        border-top-right-radius: 3px;
        border-bottom-right-radius: 3px;
        border-bottom-left-radius: 3px;
        box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset;
        white-space: nowrap;
        vertical-align: middle;
        background-position: initial initial;
        background-repeat: initial initial;
    }

    .md-comment {
        color: rgb(162, 127, 3);
        opacity: 0.8;
        font-family: var(--monospace);
    }

    code {
        text-align: left;
    }

    a.md-print-anchor {
        white-space: pre !important;
        border: none !important;
        display: inline-block !important;
        position: absolute !important;
        width: 1px !important;
        right: 0px !important;
        outline: 0px !important;
        text-shadow: initial !important;
        background-position: 0px 0px !important;
        background-repeat: initial initial !important;
    }

    .md-inline-math .MathJax_SVG .noError {
        display: none !important;
    }

    .html-for-mac .inline-math-svg .MathJax_SVG {
        vertical-align: 0.2px;
    }

    .md-math-block .MathJax_SVG_Display {
        text-align: center;
        margin: 0px;
        position: relative;
        text-indent: 0px;
        max-width: none;
        max-height: none;
        min-height: 0px;
        min-width: 100%;
        width: auto;
        overflow-y: hidden;
        display: block !important;
    }

    .MathJax_SVG_Display, .md-inline-math .MathJax_SVG_Display {
        width: auto;
        margin: inherit;
        display: inline-block !important;
    }

    .MathJax_SVG .MJX-monospace {
        font-family: var(--monospace);
    }

    .MathJax_SVG .MJX-sans-serif {
        font-family: sans-serif;
    }

    .MathJax_SVG {
        display: inline;
        font-style: normal;
        font-weight: 400;
        line-height: normal;
        zoom: 90%;
        text-indent: 0px;
        text-align: left;
        text-transform: none;
        letter-spacing: normal;
        word-spacing: normal;
        word-wrap: normal;
        white-space: nowrap;
        float: none;
        direction: ltr;
        max-width: none;
        max-height: none;
        min-width: 0px;
        min-height: 0px;
        border: 0px;
        padding: 0px;
        margin: 0px;
    }

    .MathJax_SVG * {
        transition: none;
    }

    .MathJax_SVG_Display svg {
        vertical-align: middle !important;
        margin-bottom: 0px !important;
        margin-top: 0px !important;
    }

    .os-windows.monocolor-emoji .md-emoji {
        font-family: "Segoe UI Symbol", sans-serif;
    }

    .md-diagram-panel > svg {
        max-width: 100%;
    }

    [lang="flow"] svg, [lang="mermaid"] svg {
        max-width: 100%;
        height: auto;
    }

    [lang="mermaid"] .node text {
        font-size: 1rem;
    }

    table tr th {
        border-bottom-width: 0px;
    }

    video {
        max-width: 100%;
        display: block;
        margin: 0px auto;
    }

    iframe {
        max-width: 100%;
        width: 100%;
        border: none;
    }

    .highlight td, .highlight tr {
        border: 0px;
    }

    svg[id^="mermaidChart"] {
        line-height: 1em;
    }

    mark {
        background-color: rgb(255, 255, 0);
        color: rgb(0, 0, 0);
        background-position: initial initial;
        background-repeat: initial initial;
    }

    .md-html-inline .md-plain, .md-html-inline strong, mark .md-inline-math, mark strong {
        color: inherit;
    }

    mark .md-meta {
        color: rgb(0, 0, 0);
        opacity: 0.3 !important;
    }


    /* for resume  <-- */
    #write {
        padding-top: 0px !important;
        padding-bottom: 20px !important;
    }

    content {
        margin-top: 0px !important;
        padding-top: 0px !important;
    }

    a {
        color: #000;
    }

    h1,
    h2 {
        border-bottom: 1px solid #eee !important;
        margin-bottom: 3px !important;
        padding-bottom: 3px !important;
    }

    h2 img {
        width: 16px !important;
    }

    h2 {
        font-size: 17px !important;
    }

    p {
        margin-bottom: 2px !important;
        margin-top: 2px !important;
    }

    ul {
        margin-top: 2px !important;
        margin-bottom: 2px !important;
    }

    li p {
        margin-bottom: 0px !important;
    }

    li.md-list-item {
        line-height: 20px !important;
    }

    a {
        color: #555 !important;
    }

    /* for resume --> */

    :root {
        --side-bar-bg-color: #fafafa;
        --control-text-color: #777;
    }

    @include-when-export url(https://fonts.loli.net/css?family=Open+Sans:400italic,700italic,700,400&subset=latin,latin-ext);

    html {
        font-size: 16px;
    }

    body {
        font-family: "Open Sans", "Clear Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
        color: rgb(51, 51, 51);
        line-height: 1.6;
    }

    #write {
        max-width: 860px;
        margin: 0 auto;
        padding: 30px;
        padding-bottom: 100px;
    }

    #write > ul:first-child,
    #write > ol:first-child {
        margin-top: 30px;
    }

    a {
        color: #4183C4;
    }

    h1,
    h2,
    h3,
    h4,
    h5,
    h6 {
        position: relative;
        margin-top: 1rem;
        margin-bottom: 1rem;
        font-weight: bold;
        line-height: 1.4;
        cursor: text;
    }

    h1:hover a.anchor,
    h2:hover a.anchor,
    h3:hover a.anchor,
    h4:hover a.anchor,
    h5:hover a.anchor,
    h6:hover a.anchor {
        text-decoration: none;
    }

    h1 tt,
    h1 code {
        font-size: inherit;
    }

    h2 tt,
    h2 code {
        font-size: inherit;
    }

    h3 tt,
    h3 code {
        font-size: inherit;
    }

    h4 tt,
    h4 code {
        font-size: inherit;
    }

    h5 tt,
    h5 code {
        font-size: inherit;
    }

    h6 tt,
    h6 code {
        font-size: inherit;
    }

    h1 {
        padding-bottom: .3em;
        font-size: 2.25em;
        line-height: 1.2;
        border-bottom: 1px solid #eee;
    }

    h2 {
        padding-bottom: .3em;
        font-size: 1.75em;
        line-height: 1.225;
        border-bottom: 1px solid #eee;
    }

    h3 {
        font-size: 1.5em;
        line-height: 1.43;
    }

    h4 {
        font-size: 1.25em;
    }

    h5 {
        font-size: 1em;
    }

    h6 {
        font-size: 1em;
        color: #777;
    }

    p,
    blockquote,
    ul,
    ol,
    dl,
    table {
        margin: 0.8em 0;
    }

    li > ol,
    li > ul {
        margin: 0 0;
    }

    hr {
        height: 2px;
        padding: 0;
        margin: 16px 0;
        background-color: #e7e7e7;
        border: 0 none;
        overflow: hidden;
        box-sizing: content-box;
    }

    li p.first {
        display: inline-block;
    }

    ul,
    ol {
        padding-left: 30px;
    }

    ul:first-child,
    ol:first-child {
        margin-top: 0;
    }

    ul:last-child,
    ol:last-child {
        margin-bottom: 0;
    }

    blockquote {
        border-left: 4px solid #dfe2e5;
        padding: 0 15px;
        color: #777777;
    }

    blockquote blockquote {
        padding-right: 0;
    }

    table {
        padding: 0;
        word-break: initial;
    }

    table tr {
        border-top: 1px solid #dfe2e5;
        margin: 0;
        padding: 0;
    }

    table tr:nth-child(2n),
    thead {
        background-color: #f8f8f8;
    }

    table tr th {
        font-weight: bold;
        border: 1px solid #dfe2e5;
        border-bottom: 0;
        text-align: left;
        margin: 0;
        padding: 6px 13px;
    }

    table tr td {
        border: 1px solid #dfe2e5;
        text-align: left;
        margin: 0;
        padding: 6px 13px;
    }

    table tr th:first-child,
    table tr td:first-child {
        margin-top: 0;
    }

    table tr th:last-child,
    table tr td:last-child {
        margin-bottom: 0;
    }

    .CodeMirror-lines {
        padding-left: 4px;
    }

    .code-tooltip {
        box-shadow: 0 1px 1px 0 rgba(0, 28, 36, .3);
        border-top: 1px solid #eef2f2;
    }

    .md-fences,
    code,
    tt {
        border: 1px solid #e7eaed;
        background-color: #f8f8f8;
        border-radius: 3px;
        padding: 0;
        padding: 2px 4px 0px 4px;
        font-size: 0.9em;
    }

    code {
        background-color: #f3f4f4;
        padding: 0 2px 0 2px;
    }

    .md-fences {
        margin-bottom: 15px;
        margin-top: 15px;
        padding-top: 8px;
        padding-bottom: 6px;
    }


    .md-task-list-item > input {
        margin-left: -1.3em;
    }

    @media print {
        html {
            font-size: 13px;
        }

        table,
        pre {
            page-break-inside: avoid;
        }

        pre {
            word-wrap: break-word;
        }
    }

    .md-fences {
        background-color: #f8f8f8;
    }

    #write pre.md-meta-block {
        padding: 1rem;
        font-size: 85%;
        line-height: 1.45;
        background-color: #f7f7f7;
        border: 0;
        border-radius: 3px;
        color: #777777;
        margin-top: 0 !important;
    }

    .mathjax-block > .code-tooltip {
        bottom: .375rem;
    }

    .md-mathjax-midline {
        background: #fafafa;
    }

    #write > h3.md-focus:before {
        left: -1.5625rem;
        top: .375rem;
    }

    #write > h4.md-focus:before {
        left: -1.5625rem;
        top: .285714286rem;
    }

    #write > h5.md-focus:before {
        left: -1.5625rem;
        top: .285714286rem;
    }

    #write > h6.md-focus:before {
        left: -1.5625rem;
        top: .285714286rem;
    }

    .md-image > .md-meta {
        /*border: 1px solid #ddd;*/
        border-radius: 3px;
        padding: 2px 0px 0px 4px;
        font-size: 0.9em;
        color: inherit;
    }

    .md-tag {
        color: #a7a7a7;
        opacity: 1;
    }

    .md-toc {
        margin-top: 20px;
        padding-bottom: 20px;
    }

    .sidebar-tabs {
        border-bottom: none;
    }

    #typora-quick-open {
        border: 1px solid #ddd;
        background-color: #f8f8f8;
    }

    #typora-quick-open-item {
        background-color: #FAFAFA;
        border-color: #FEFEFE #e5e5e5 #e5e5e5 #eee;
        border-style: solid;
        border-width: 1px;
    }

    /** focus mode */
    .on-focus-mode blockquote {
        border-left-color: rgba(85, 85, 85, 0.12);
    }

    header,
    .context-menu,
    .megamenu-content,
    footer {
        font-family: "Segoe UI", "Arial", sans-serif;
    }

    .file-node-content:hover .file-node-icon,
    .file-node-content:hover .file-node-open-state {
        visibility: visible;
    }

    .mac-seamless-mode #typora-sidebar {
        background-color: #fafafa;
        background-color: var(--side-bar-bg-color);
    }

    .md-lang {
        color: #b4654d;
    }

    .html-for-mac .context-menu {
        --item-hover-bg-color: #E6F0FE;
    }

    #md-notification .btn {
        border: 0;
    }

    .dropdown-menu .divider {
        border-color: #e5e5e5;
    }

    .typora-export li, .typora-export p, .typora-export, .footnote-line {
        white-space: normal;
    }
    </style>
</head>
<body class='typora-export'>
<div id='write' class='is-mac'>
    <center>
        <h1>龚涛</h1>
        <div>
         <span>
             <img src="assets/phone-solid.svg" width="18px">
             17361040630
         </span>
            ·
            <span>
             <img src="assets/envelope-solid.svg" width="18px">
             gongsir0630@163.com
         </span>
            ·
            <span>
             <img src="assets/github-brands.svg" width="18px">
             <a href="https://github.com/gongsir0630">码之泪殇</a>
         </span>
            ·
            <span>
             <img src="assets/rss-solid.svg" width="18px">
             <a href="http://www.gongsir.club/">个人主页</a>
         </span>
        </div>
    </center>
    <p>&nbsp;</p>
    <h2><a name="img-srcassetsinfo-circle-solidsvg-width30px-个人信息" class="md-header-anchor"></a><img
            src="assets/info-circle-solid.svg" width="30px"><span> 个人信息</span></h2>
    <ul>
        <li><span>男，21岁</span></li>
        <li><span>求职意向：Java 后台研发</span></li>
        <li><span>籍贯：四川成都</span></li>
        <li><span>政治面貌：中共预备党员</span></li>
    </ul>
    <h2><a name="img-srcassetsgraduation-cap-solidsvg-width30px-校园经历" class="md-header-anchor"></a><img
            src="assets/graduation-cap-solid.svg" width="30px"><span> 校园经历</span></h2>
    <ul>
        <li><span>本科在读，西南石油大学，计算机科学与技术专业（绩点：3.6，年级前 10%）【2017.9~2021.6】</span></li>
        <li><span>通过 CET4 英语等级考试</span></li>
        <li>
            <span>任职校级社团计算机协会会长，带领协会成员组织</span><strong><span>电脑义诊</span></strong><span>、</span><strong><span>程序设计竞赛</span></strong><span>等多次校级活动，主导开发社团官网，荣获</span><strong><span>2018-2019年度优秀会长</span></strong><span>荣誉称号【2018.06-2019.06】</span>
        </li>
        <li>
            <span>从事学校网信中心网络维护部学工助理工作，和团队成员一起维护全体师生的校园网络问题，2019年6月升任团队队长，负责团队技术指导工作，协助老师完成整个中心的数字校园问题的解决【2017.10-至今】</span>
        </li>
    </ul>
    <h2><a name="img-srcassetsbriefcase-solidsvg-width30px-实习经历" class="md-header-anchor"></a><img
            src="assets/briefcase-solid.svg" width="30px"><span> 实习经历</span></h2>
    <ul>
        <li><p><strong><span>北京小米移动软件有限公司，信息技术部-新零售-B2B组，软件工程师，2019.7~2019.9</span></strong></p>
            <ul>
                <li><span>学会了使用GIt、Gitlab、Maven等工具进行团队协作开发，了解了真实项目的整体开发流程</span></li>
                <li><span>参与小米直供系统后台研发（SSM项目），使用java8流特性、lombok组件重构、优化部分代码，提高代码简洁性</span></li>
                <li><span>独立完成用户模块接口优化，调整部分代码逻辑和SQL语句，使用join连接代替子查询以提高sql查询性能，最终将接口响应时间优化到100ms以内，较之前提升了90%</span></li>
                <li><span>参与完成项目的测试环境和预发布环境的部署上线</span></li>
                <li><span>闲暇时间，整理实习过程中学到的技术、知识到个人技术博客（CSDN：码之泪殇）</span></li>
            </ul>
        </li>
    </ul>
    <h2><a name="img-srcassetsproject-diagram-solidsvg-width30px-项目经历" class="md-header-anchor"></a><img
            src="assets/project-diagram-solid.svg" width="30px"><span> 项目经历</span></h2>
    <ul>
        <li><p><strong><span>西柚失寻（</span><a href='https://gitee.com/gongsir0630/LostAndFoundOnCampus' target='_blank'
                                            class='url'>https://gitee.com/gongsir0630/LostAndFoundOnCampus</a><span>），2019.10-2020.03</span></strong>
        </p>
            <ul>
                <li><p><span>简介：基于小程序的失物招领平台，支持证件OCR识别、订阅失物招通知，快速方便找回遗失物品</span></p></li>
                <li><p><span>技术栈：SpringBoot、Mybatis、MySQL、JWT、Maven、Git、微信小程序等</span></p></li>
                <li><p><span>我的职责：</span></p>
                    <ul>
                        <li><span>组建开发团队（4人），制定项目目标和开发计划，关注相关竞赛，以此项目报名参赛</span></li>
                        <li><span>负责整个项目的后端开发工作，使用SpringBoot搭建后端开发基础环境，学习微信官方API接口，完成小程序微信登录功能，完成订阅消息功能，用户可以通过证件号订阅自己的卡证失物信息通知</span>
                        </li>
                        <li><span>使用百度云ocr完成证件识别接口</span></li>
                        <li><span>负责后端服务网站部署，使用阿里云服务器，注册个人域名完成备案</span></li>
                        <li><span>使用阿里云的短信服务，完成短信验证码功能，用于后台管理员登录、注册时身份验证</span></li>
                        <li><span>定期组织项目会议，跟进组员进度，调整开发计划，解决遗留问题，整理开发日志等</span></li>
                    </ul>
                </li>
                <li><p><span>项目成果：</span></p>
                    <ul>
                        <li><span>2019年底QQ小程序正式上线，一周内小程序注册用户达近3000人次</span></li>
                        <li><span>2019年12月，项目参加学院嵌入式程序设计大赛，荣获第一名；随后参加“盛特杯”大学生科研立项，获优秀结题荣誉和奖金</span></li>
                        <li><span>2020年，小程序成功申请软件著作权</span></li>
                        <li><span>2020年6月，小程序参加微信小程序应用开发赛,获<strong>西南赛区二等奖</strong></span></li>
                    </ul>
                </li>
            </ul>
        </li>
        <li><p><strong><span>多方数据安全计算平台（</span><a href='https://github.com/gongsir0630/dubbo-test' target='_blank'
                                                  class='url'>https://github.com/gongsir0630/dubbo-test</a><span>），2020.01-2020.05</span></strong>
        </p>
            <ul>
                <li><p><span>简介：对来自多方数据源的明文数据加密，密文输出到计算平台，计算平台直接将密文进行相应的模型计算，最终将计算结果解密返回给用户，保证结果密文解密的值和明文计算结果一致，平台实现Web可视化管理</span>
                </p></li>
                <li><p><span>技术栈：SpringBoot、Dubbo、Zookeeper、Mybatis、Spring Data JPA、Spring Security等</span></p></li>
                <li><p><span>我的职责：</span></p>
                    <ul>
                        <li><span>由于疫情原因，采用飞书组织团队成员进行在线会议，撰写设计文档，确定开发计划</span></li>
                        <li><span>设计项目结构，将项目差分为用户、秘钥、数据、计算、系统管理共五个模块，采用Dubbo+Zookeeper实现分布式RPC调用</span></li>
                        <li><span>搭建后端开发环境，使用GitHub进行代码管理；统一技术栈，使用Nexus搭建Maven私服，方便团队线上开发</span></li>
                        <li><span>完成用户模块、核心计算模块的开发，部署Dubbo-admin工具，方便对开发出来的接口进行测试</span></li>
                        <li><span>开发ResultFul风格的API，使用Swagger组件将API展示在UI界面，方便前端同学使用</span></li>
                        <li><span>多模块项目部署，采用阿里的Could ToolKit工具快速将多个模块部署到相应的服务器，提高部署效率</span></li>
                    </ul>
                </li>
                <li><p><span>项目成果：</span></p>
                    <ul>
                        <li><span>2020年6月，项目参加第十一届大学生服务外包竞赛，获西部赛区三等奖</span></li>
                    </ul>
                </li>
            </ul>
        </li>
    </ul>
    <h2><a name="img-srcassetsstudentwork-solidsvg-width30px校园经历" class="md-header-anchor"></a><img
            src="assets/studentWork-solid.svg" width="30px"><span>荣誉奖项</span></h2>
    <ul>
        <li><span>2019.12，荣获第九届“盛特杯”大学生课外科研立项优秀项目</span></li>
        <li><span>2019.09，荣获国家励志奖学金、晶奇网络奖学金、优秀学生奖学金、优秀团员</span></li>
        <li><span>2019.04，荣获中国大学服务外包大赛西部赛区三等奖</span></li>
        <li><span>2018.10，荣获2018红帽Linux全国挑战赛川渝赛区一等奖</span></li>
    </ul>
    <h2><a name="img-srcassetstools-solidsvg-width30px-技能清单" class="md-header-anchor"></a><img
            src="assets/tools-solid.svg" width="30px"><span> 技能清单</span></h2>
    <ul>
        <li><span>熟悉Java语法，多线程，集合等基础框架</span></li>
        <li><span>熟悉常用Linux命令，网络配置、环境配置，能使用Linux进行项目部署、状态查看</span></li>
        <li><span>了解Spring、SSM、SpringBoot等主流开发框架，了解Redis、Mail、Quartz等组件，有相关开发经验</span></li>
        <li><span>能熟练使用Maven、Git、SVN、IDEA、Navicat、PDMan等工具</span></li>
        <li><span>熟练使用主流的关系型数据库，如MySQL，有SQL语句调优经验</span></li>
        <li><span>HTML|CSS|JavaScript|微信小程序</span></li>
    </ul>
</div>
</body>
</html>